From: kfraser@localhost.localdomain Date: Tue, 1 Aug 2006 14:28:09 +0000 (+0100) Subject: [XEN] Hide compile-time information values behind a X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15754^2~28 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=5dd83c7e6d9eb830707ff31702f3f09a4a22a260;p=xen.git [XEN] Hide compile-time information values behind a functional interface, so that the values are contained within a single object file. Signed-off-by: Keir Fraser --- diff --git a/xen/Makefile b/xen/Makefile index 4279b0ef27..d9f5322eb6 100644 --- a/xen/Makefile +++ b/xen/Makefile @@ -72,7 +72,7 @@ $(TARGET): delete-unfresh-files .PHONY: delete-unfresh-files delete-unfresh-files: @if [ ! -r include/xen/compile.h -o -O include/xen/compile.h ]; then \ - rm -f include/xen/{banner,compile}.h; \ + rm -f include/xen/compile.h; \ fi # acm_policy.h contains security policy for Xen @@ -91,7 +91,7 @@ include/xen/acm_policy.h: # compile.h contains dynamic build info. Rebuilt on every 'make' invocation. include/xen/compile.h: LANG=C -include/xen/compile.h: include/xen/compile.h.in include/xen/banner.h +include/xen/compile.h: include/xen/compile.h.in @sed -e 's/@@date@@/$(shell date)/g' \ -e 's/@@time@@/$(shell date +%T)/g' \ -e 's/@@whoami@@/$(shell whoami)/g' \ @@ -103,11 +103,7 @@ include/xen/compile.h: include/xen/compile.h.in include/xen/banner.h -e 's/@@extraversion@@/$(XEN_EXTRAVERSION)/g' \ -e 's!@@changeset@@!$(shell ((hg parents || head -n 7 ../ChangeLog || echo date: unavailable) | awk '{FS="changeset:[ ]+"}/^changeset/{CS=$$2};{FS="date:[ ]+"}/^date/{D=$$2}; END {print D, CS}') 2>/dev/null)!g' \ < include/xen/compile.h.in > $@.new - @cat include/xen/banner.h >> $@.new - @mv -f $@.new $@ - -include/xen/banner.h: - tools/figlet/figlet -d tools/figlet Xen $(XEN_FULLVERSION) > $@.new + tools/figlet/figlet -d tools/figlet Xen $(XEN_FULLVERSION) >> $@.new @mv -f $@.new $@ include/asm-$(TARGET_ARCH)/asm-offsets.h: arch/$(TARGET_ARCH)/asm-offsets.s diff --git a/xen/Rules.mk b/xen/Rules.mk index 674e4a39bc..17a0eb04aa 100644 --- a/xen/Rules.mk +++ b/xen/Rules.mk @@ -43,7 +43,6 @@ include $(BASEDIR)/arch/$(TARGET_ARCH)/Rules.mk # Do not depend on auto-generated header files. HDRS := $(subst $(BASEDIR)/include/asm-$(TARGET_ARCH)/asm-offsets.h,,$(HDRS)) -HDRS := $(subst $(BASEDIR)/include/xen/banner.h,,$(HDRS)) HDRS := $(subst $(BASEDIR)/include/xen/compile.h,,$(HDRS)) # Note that link order matters! diff --git a/xen/arch/ia64/xen/dom_fw.c b/xen/arch/ia64/xen/dom_fw.c index a3f699646b..df6cfca77e 100644 --- a/xen/arch/ia64/xen/dom_fw.c +++ b/xen/arch/ia64/xen/dom_fw.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include @@ -353,7 +353,8 @@ dom_fw_fake_acpi(struct domain *d, struct fake_acpi_tables *tables) strcpy(xsdt->oem_id, "XEN"); strcpy(xsdt->oem_table_id, "Xen/ia64"); strcpy(xsdt->asl_compiler_id, "XEN"); - xsdt->asl_compiler_revision = (XEN_VERSION<<16)|(XEN_SUBVERSION); + xsdt->asl_compiler_revision = (xen_major_version() << 16) | + xen_minor_version(); xsdt->table_offset_entry[0] = dom_pa((unsigned long) fadt); tables->madt_ptr = dom_pa((unsigned long) madt); @@ -367,7 +368,8 @@ dom_fw_fake_acpi(struct domain *d, struct fake_acpi_tables *tables) strcpy(fadt->oem_id, "XEN"); strcpy(fadt->oem_table_id, "Xen/ia64"); strcpy(fadt->asl_compiler_id, "XEN"); - fadt->asl_compiler_revision = (XEN_VERSION<<16)|(XEN_SUBVERSION); + fadt->asl_compiler_revision = (xen_major_version() << 16) | + xen_minor_version(); strncpy(facs->signature, FACS_SIG, 4); facs->version = 1; @@ -413,7 +415,8 @@ dom_fw_fake_acpi(struct domain *d, struct fake_acpi_tables *tables) strcpy(dsdt->oem_id, "XEN"); strcpy(dsdt->oem_table_id, "Xen/ia64"); strcpy(dsdt->asl_compiler_id, "XEN"); - dsdt->asl_compiler_revision = (XEN_VERSION<<16)|(XEN_SUBVERSION); + dsdt->asl_compiler_revision = (xen_major_version() << 16) | + xen_minor_version(); /* Trivial namespace, avoids ACPI CA complaints */ tables->aml[0] = 0x10; /* Scope */ @@ -454,7 +457,8 @@ dom_fw_fake_acpi(struct domain *d, struct fake_acpi_tables *tables) strcpy(madt->header.oem_id, "XEN"); strcpy(madt->header.oem_table_id, "Xen/ia64"); strcpy(madt->header.asl_compiler_id, "XEN"); - madt->header.asl_compiler_revision = (XEN_VERSION<<16)|(XEN_SUBVERSION); + madt->header.asl_compiler_revision = (xen_major_version() << 16) | + xen_minor_version(); /* An LSAPIC entry describes a CPU. */ for (i = 0; i < MAX_VIRT_CPUS; i++) { diff --git a/xen/arch/ia64/xen/domain.c b/xen/arch/ia64/xen/domain.c index b4c7401e5c..25c3c854b8 100644 --- a/xen/arch/ia64/xen/domain.c +++ b/xen/arch/ia64/xen/domain.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include #include /* for IA64_THREAD_INFO_SIZE */ @@ -1069,7 +1069,8 @@ int construct_dom0(struct domain *d, panic("can't allocate start info page"); si = page_to_virt(start_info_page); memset(si, 0, PAGE_SIZE); - sprintf(si->magic, "xen-%i.%i-ia64", XEN_VERSION, XEN_SUBVERSION); + sprintf(si->magic, "xen-%i.%i-ia64", + xen_major_version(), xen_minor_version()); si->nr_pages = max_pages; si->flags = SIF_INITDOMAIN|SIF_PRIVILEGED; diff --git a/xen/arch/ia64/xen/xensetup.c b/xen/arch/ia64/xen/xensetup.c index 2fcab3ea14..eccc8bb349 100644 --- a/xen/arch/ia64/xen/xensetup.c +++ b/xen/arch/ia64/xen/xensetup.c @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include #include @@ -547,11 +547,13 @@ printk("num_online_cpus=%d, max_cpus=%d\n",num_online_cpus(),max_cpus); void arch_get_xen_caps(xen_capabilities_info_t info) { char *p=info; + int major = xen_major_version(); + int minor = xen_minor_version(); - p += sprintf(p,"xen-%d.%d-ia64 ", XEN_VERSION, XEN_SUBVERSION); + p += sprintf(p,"xen-%d.%d-ia64 ", major, minor); if (vmx_enabled) - p += sprintf(p,"hvm-%d.%d-ia64 ", XEN_VERSION, XEN_SUBVERSION); + p += sprintf(p,"hvm-%d.%d-ia64 ", major, minor); *(p-1) = 0; diff --git a/xen/arch/powerpc/boot_of.c b/xen/arch/powerpc/boot_of.c index 1b22c2a7fb..4fd5b0b571 100644 --- a/xen/arch/powerpc/boot_of.c +++ b/xen/arch/powerpc/boot_of.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include @@ -976,9 +976,9 @@ multiboot_info_t __init *boot_of_init( of_printf("%s\n", "---------------------------------------------------"); of_printf("OF: Xen/PPC version %d.%d%s (%s@%s) (%s) %s\n", - XEN_VERSION, XEN_SUBVERSION, XEN_EXTRAVERSION, - XEN_COMPILE_BY, XEN_COMPILE_DOMAIN, - XEN_COMPILER, XEN_COMPILE_DATE); + xen_major_version(), xen_minor_version(), xen_extra_version(), + xen_compile_by(), xen_compile_domain(), + xen_compiler(), xen_compile_date()); of_printf("%s args: 0x%lx 0x%lx 0x%lx 0x%lx 0x%lx\n" "boot msr: 0x%lx\n", diff --git a/xen/arch/powerpc/domain_build.c b/xen/arch/powerpc/domain_build.c index dfe51f62cd..89f68dae1b 100644 --- a/xen/arch/powerpc/domain_build.c +++ b/xen/arch/powerpc/domain_build.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include "oftree.h" @@ -153,7 +153,7 @@ int construct_dom0(struct domain *d, printk("xen_start_info: %p\n", si); sprintf(si->magic, "xen-%i.%i-powerpc%d%s", - XEN_VERSION, XEN_SUBVERSION, BITS_PER_LONG, "HV"); + xen_major_version(), xen_minor_version(), BITS_PER_LONG, "HV"); si->flags = SIF_PRIVILEGED | SIF_INITDOMAIN; si->shared_info = ((ulong)d->shared_info) - rma; diff --git a/xen/arch/powerpc/mpic_init.c b/xen/arch/powerpc/mpic_init.c index 59cb8d80d2..5977868451 100644 --- a/xen/arch/powerpc/mpic_init.c +++ b/xen/arch/powerpc/mpic_init.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include "mpic_init.h" #include "oftree.h" diff --git a/xen/arch/powerpc/ofd_fixup.c b/xen/arch/powerpc/ofd_fixup.c index 6178a1fabe..5905423590 100644 --- a/xen/arch/powerpc/ofd_fixup.c +++ b/xen/arch/powerpc/ofd_fixup.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include "of-devtree.h" @@ -420,7 +420,7 @@ static ofdn_t ofd_xen_props(void *m, struct domain *d, start_info_t *si) ofd_prop_add(m, n, "name", &path[1], sizeof (path) - 1); xl = snprintf(xen, sizeof (xen), "Xen-%d.%d%s", - XEN_VERSION, XEN_SUBVERSION, XEN_EXTRAVERSION); + xen_major_version(), xen_minor_version(), xen_extra_version()); ASSERT(xl < sizeof (xen)); ofd_prop_add(m, n, "version", xen, xl + 1); diff --git a/xen/arch/powerpc/powerpc64/traps.c b/xen/arch/powerpc/powerpc64/traps.c index 8948c27313..e1945faa27 100644 --- a/xen/arch/powerpc/powerpc64/traps.c +++ b/xen/arch/powerpc/powerpc64/traps.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include void show_registers(struct cpu_user_regs *regs) @@ -32,7 +32,7 @@ void show_registers(struct cpu_user_regs *regs) console_start_sync(); printk("----[ Xen-%d.%d%s ]----\n", - XEN_VERSION, XEN_SUBVERSION, XEN_EXTRAVERSION); + xen_major_version(), xen_minor_version(), xen_extra_version()); printk("CPU: %08x DOMID: %08x\n", smp_processor_id(), current->domain->domain_id); printk("pc %016lx msr %016lx\n" diff --git a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c index 8c89877b08..78180898b7 100644 --- a/xen/arch/x86/domain_build.c +++ b/xen/arch/x86/domain_build.c @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include @@ -726,7 +726,8 @@ int construct_dom0(struct domain *d, si->nr_pt_frames = nr_pt_pages; si->mfn_list = vphysmap_start; sprintf(si->magic, "xen-%i.%i-x86_%d%s", - XEN_VERSION, XEN_SUBVERSION, BITS_PER_LONG, xen_pae ? "p" : ""); + xen_major_version(), xen_minor_version(), + BITS_PER_LONG, xen_pae ? "p" : ""); /* Write the phys->machine and machine->phys table entries. */ for ( pfn = 0; pfn < d->tot_pages; pfn++ ) diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index d49073ce3e..dbf4909495 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include #include @@ -612,30 +612,32 @@ void __init __start_xen(multiboot_info_t *mbi) void arch_get_xen_caps(xen_capabilities_info_t info) { char *p = info; + int major = xen_major_version(); + int minor = xen_minor_version(); #if defined(CONFIG_X86_32) && !defined(CONFIG_X86_PAE) - p += sprintf(p, "xen-%d.%d-x86_32 ", XEN_VERSION, XEN_SUBVERSION); + p += sprintf(p, "xen-%d.%d-x86_32 ", major, minor); if ( hvm_enabled ) - p += sprintf(p, "hvm-%d.%d-x86_32 ", XEN_VERSION, XEN_SUBVERSION); + p += sprintf(p, "hvm-%d.%d-x86_32 ", major, minor); #elif defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE) - p += sprintf(p, "xen-%d.%d-x86_32p ", XEN_VERSION, XEN_SUBVERSION); + p += sprintf(p, "xen-%d.%d-x86_32p ", major, minor); if ( hvm_enabled ) { - p += sprintf(p, "hvm-%d.%d-x86_32 ", XEN_VERSION, XEN_SUBVERSION); - p += sprintf(p, "hvm-%d.%d-x86_32p ", XEN_VERSION, XEN_SUBVERSION); + p += sprintf(p, "hvm-%d.%d-x86_32 ", major, minor); + p += sprintf(p, "hvm-%d.%d-x86_32p ", major, minor); } #elif defined(CONFIG_X86_64) - p += sprintf(p, "xen-%d.%d-x86_64 ", XEN_VERSION, XEN_SUBVERSION); + p += sprintf(p, "xen-%d.%d-x86_64 ", major, minor); if ( hvm_enabled ) { - p += sprintf(p, "hvm-%d.%d-x86_32 ", XEN_VERSION, XEN_SUBVERSION); - p += sprintf(p, "hvm-%d.%d-x86_32p ", XEN_VERSION, XEN_SUBVERSION); - p += sprintf(p, "hvm-%d.%d-x86_64 ", XEN_VERSION, XEN_SUBVERSION); + p += sprintf(p, "hvm-%d.%d-x86_32 ", major, minor); + p += sprintf(p, "hvm-%d.%d-x86_32p ", major, minor); + p += sprintf(p, "hvm-%d.%d-x86_64 ", major, minor); } #else diff --git a/xen/arch/x86/x86_32/traps.c b/xen/arch/x86/x86_32/traps.c index 3774aa83c8..ae18f654ad 100644 --- a/xen/arch/x86/x86_32/traps.c +++ b/xen/arch/x86/x86_32/traps.c @@ -1,6 +1,6 @@ #include -#include +#include #include #include #include @@ -52,7 +52,7 @@ void show_registers(struct cpu_user_regs *regs) } printk("----[ Xen-%d.%d%s %s ]----\n", - XEN_VERSION, XEN_SUBVERSION, XEN_EXTRAVERSION, + xen_major_version(), xen_minor_version(), xen_extra_version(), print_tainted(taint_str)); printk("CPU: %d\nEIP: %04x:[<%08x>]", smp_processor_id(), fault_regs.cs, fault_regs.eip); @@ -131,7 +131,7 @@ asmlinkage void do_double_fault(void) /* Find information saved during fault and dump it to the console. */ tss = &init_tss[cpu]; printk("*** DOUBLE FAULT: Xen-%d.%d%s %s\n", - XEN_VERSION, XEN_SUBVERSION, XEN_EXTRAVERSION, + xen_major_version(), xen_minor_version(), xen_extra_version(), print_tainted(taint_str)); printk("CPU: %d\nEIP: %04x:[<%08x>]", cpu, tss->cs, tss->eip); diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c index a5b7aef858..3cae3e3fc3 100644 --- a/xen/arch/x86/x86_64/traps.c +++ b/xen/arch/x86/x86_64/traps.c @@ -1,6 +1,6 @@ #include -#include +#include #include #include #include @@ -45,7 +45,7 @@ void show_registers(struct cpu_user_regs *regs) } printk("----[ Xen-%d.%d%s %s ]----\n", - XEN_VERSION, XEN_SUBVERSION, XEN_EXTRAVERSION, + xen_major_version(), xen_minor_version(), xen_extra_version(), print_tainted(taint_str)); printk("CPU: %d\nRIP: %04x:[<%016lx>]", smp_processor_id(), fault_regs.cs, fault_regs.rip); @@ -128,7 +128,7 @@ asmlinkage void do_double_fault(struct cpu_user_regs *regs) /* Find information saved during fault and dump it to the console. */ printk("*** DOUBLE FAULT: Xen-%d.%d%s %s\n", - XEN_VERSION, XEN_SUBVERSION, XEN_EXTRAVERSION, + xen_major_version(), xen_minor_version(), xen_extra_version(), print_tainted(taint_str)); printk("CPU: %d\nRIP: %04x:[<%016lx>]", cpu, regs->cs, regs->rip); diff --git a/xen/common/Makefile b/xen/common/Makefile index f6bad03a1a..be3179afdc 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -21,6 +21,7 @@ obj-y += string.o obj-y += symbols.o obj-y += trace.o obj-y += timer.o +obj-y += version.o obj-y += vsprintf.o obj-y += xmalloc.o @@ -28,4 +29,4 @@ obj-$(perfc) += perfc.o obj-$(crash_debug) += gdbstub.o # Object file contains changeset and compiler information. -kernel.o: $(BASEDIR)/include/xen/compile.h +version.o: $(BASEDIR)/include/xen/compile.h diff --git a/xen/common/kernel.c b/xen/common/kernel.c index dc76a893a3..5c3069bb62 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include @@ -125,13 +125,13 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE(void) arg) { case XENVER_version: { - return (XEN_VERSION<<16) | (XEN_SUBVERSION); + return (xen_major_version() << 16) | xen_minor_version(); } case XENVER_extraversion: { xen_extraversion_t extraversion; - safe_strcpy(extraversion, XEN_EXTRAVERSION); + safe_strcpy(extraversion, xen_extra_version()); if ( copy_to_guest(arg, (char *)extraversion, sizeof(extraversion)) ) return -EFAULT; return 0; @@ -140,10 +140,10 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE(void) arg) case XENVER_compile_info: { struct xen_compile_info info; - safe_strcpy(info.compiler, XEN_COMPILER); - safe_strcpy(info.compile_by, XEN_COMPILE_BY); - safe_strcpy(info.compile_domain, XEN_COMPILE_DOMAIN); - safe_strcpy(info.compile_date, XEN_COMPILE_DATE); + safe_strcpy(info.compiler, xen_compiler()); + safe_strcpy(info.compile_by, xen_compile_by()); + safe_strcpy(info.compile_domain, xen_compile_domain()); + safe_strcpy(info.compile_date, xen_compile_date()); if ( copy_to_guest(arg, &info, 1) ) return -EFAULT; return 0; @@ -176,7 +176,7 @@ long do_xen_version(int cmd, XEN_GUEST_HANDLE(void) arg) case XENVER_changeset: { xen_changeset_info_t chgset; - safe_strcpy(chgset, XEN_CHANGESET); + safe_strcpy(chgset, xen_changeset()); if ( copy_to_guest(arg, (char *)chgset, sizeof(chgset)) ) return -EFAULT; return 0; diff --git a/xen/common/version.c b/xen/common/version.c new file mode 100644 index 0000000000..6afa128cd0 --- /dev/null +++ b/xen/common/version.c @@ -0,0 +1,56 @@ +#include + +const char *xen_compile_date(void) +{ + return XEN_COMPILE_DATE; +} + +const char *xen_compile_time(void) +{ + return XEN_COMPILE_TIME; +} + +const char *xen_compile_by(void) +{ + return XEN_COMPILE_BY; +} + +const char *xen_compile_domain(void) +{ + return XEN_COMPILE_DOMAIN; +} + +const char *xen_compile_host(void) +{ + return XEN_COMPILE_HOST; +} + +const char *xen_compiler(void) +{ + return XEN_COMPILER; +} + +unsigned int xen_major_version(void) +{ + return XEN_VERSION; +} + +unsigned int xen_minor_version(void) +{ + return XEN_SUBVERSION; +} + +const char *xen_extra_version(void) +{ + return XEN_EXTRAVERSION; +} + +const char *xen_changeset(void) +{ + return XEN_CHANGESET; +} + +const char *xen_banner(void) +{ + return XEN_BANNER; +} diff --git a/xen/drivers/char/Makefile b/xen/drivers/char/Makefile index e63753d429..ded9a94cc1 100644 --- a/xen/drivers/char/Makefile +++ b/xen/drivers/char/Makefile @@ -1,6 +1,3 @@ obj-y += console.o obj-y += ns16550.o obj-y += serial.o - -# Object file contains changeset and compiler information. -console.o: $(BASEDIR)/include/xen/compile.h diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index c9a56771c5..f5ca219f9c 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include #include @@ -488,14 +488,14 @@ void init_console(void) serial_set_rx_handler(sercon_handle, serial_rx); /* HELLO WORLD --- start-of-day banner text. */ - printk(XEN_BANNER); + printk(xen_banner()); printk(" http://www.cl.cam.ac.uk/netos/xen\n"); printk(" University of Cambridge Computer Laboratory\n\n"); printk(" Xen version %d.%d%s (%s@%s) (%s) %s\n", - XEN_VERSION, XEN_SUBVERSION, XEN_EXTRAVERSION, - XEN_COMPILE_BY, XEN_COMPILE_DOMAIN, - XEN_COMPILER, XEN_COMPILE_DATE); - printk(" Latest ChangeSet: %s\n\n", XEN_CHANGESET); + xen_major_version(), xen_minor_version(), xen_extra_version(), + xen_compile_by(), xen_compile_domain(), + xen_compiler(), xen_compile_date()); + printk(" Latest ChangeSet: %s\n\n", xen_changeset()); set_printk_prefix("(XEN) "); if ( opt_sync_console ) diff --git a/xen/include/xen/version.h b/xen/include/xen/version.h new file mode 100644 index 0000000000..81a3c7d111 --- /dev/null +++ b/xen/include/xen/version.h @@ -0,0 +1,16 @@ +#ifndef __XEN_VERSION_H__ +#define __XEN_VERSION_H__ + +const char *xen_compile_date(void); +const char *xen_compile_time(void); +const char *xen_compile_by(void); +const char *xen_compile_domain(void); +const char *xen_compile_host(void); +const char *xen_compiler(void); +unsigned int xen_major_version(void); +unsigned int xen_minor_version(void); +const char *xen_extra_version(void); +const char *xen_changeset(void); +const char *xen_banner(void); + +#endif /* __XEN_VERSION_H__ */